package cn.iocoder.yudao.module.system.controller.admin.queryscene.vo;

import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.map.MapUtil;
import cn.iocoder.yudao.framework.mybatis.core.enums.QueryFieldType;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 外呼记录构建条件
 */
@Data
public class CallRecordCondition extends QuerySceneBaseVO{

    public static List<QuerySceneBaseVO> buildList(Map<Object, Object> userIdNameList) {
        return ListUtil.toList(
                new CallRecordCondition().setField("callee").setFieldName("被叫号码").setQueryType(buildDefaultQueryType()).setFieldType(QueryFieldType.INPUT),
                new CallRecordCondition().setField("agent_number").setFieldName("坐席工号").setQueryType(buildDefaultQueryType()).setFieldType(QueryFieldType.INPUT),
                new CallRecordCondition().setField("telephone").setFieldName("坐席手机号").setQueryType(buildDefaultQueryType()).setFieldType(QueryFieldType.INPUT),
                new CallRecordCondition().setField("remark").setFieldName("通话备注").setQueryType(buildDefaultQueryType()).setFieldType(QueryFieldType.INPUT),
                // 选项类
                new CallRecordCondition().setField("call_type").setFieldName("呼叫方式").setQueryType(buildEQQueryType()).setQueryOptions(MapUtil.builder().put("1", "点呼").put("2", "群呼").put("3","AI外呼").build()).setFieldType(QueryFieldType.SELECT),
                new CallRecordCondition().setField("result_code").setFieldName("话单状态").setQueryType(buildEQQueryType()).setQueryOptions(MapUtil.builder().put("success", "成功").put("leak", "漏接").put("fail", "失败").put("illegal", "错误").build()).setFieldType(QueryFieldType.SELECT),
                new CallRecordCondition().setField("result_type").setFieldName("呼叫结果描述").setQueryType(buildEQQueryType()).setQueryOptions(MapUtil.builder().put("1", "呼叫成功").put("10", "播放语音时挂断").put("11", "播放语音完挂断").put("90", "线路系统异常").put("91", "黑名单或拦截").put("92", "空号或号码错误").put("93", "客户拒接或挂断").put("94", "客户忙或未接听").put("95", "坐席忙或未接听").put("99", "呼叫失败").build()).setFieldType(QueryFieldType.SELECT),

                new CallRecordCondition().setField("download_status").setFieldName("录音生成状态").setQueryType(buildEQQueryType()).setQueryOptions(MapUtil.builder().put(true, "已生成").put(false, "未生成").build()).setFieldType(QueryFieldType.SELECT),
                new CallRecordCondition().setField("trans_status").setFieldName("AI文字生成状态").setQueryType(buildEQQueryType()).setQueryOptions(MapUtil.builder().put("1", "已生成").put("0", "未生成").build()).setFieldType(QueryFieldType.SELECT),
                // 负责人
                new CallRecordCondition().setField("owner_user_id").setFieldName("负责人").setQueryType(buildDefaultQueryType2()).setQueryOptions(userIdNameList).setFieldType(QueryFieldType.SELECT),
                // 时间类型
                new CallRecordCondition().setField("create_time").setFieldName("拨打时间").setQueryType(buildRangeQueryType()).setFieldType(QueryFieldType.TIME),
                new CallRecordCondition().setField("start_time").setFieldName("接听时间").setQueryType(buildRangeQueryType()).setFieldType(QueryFieldType.TIME),
                new CallRecordCondition().setField("end_time").setFieldName("结束时间").setQueryType(buildRangeQueryType()).setFieldType(QueryFieldType.TIME),
                // 数值类型
                new CallRecordCondition().setField("call_second").setFieldName("通话时长").setQueryType(buildRangeQueryType()).setFieldType(QueryFieldType.NUMBER),
                new CallRecordCondition().setField("call_minute").setFieldName("计费时长").setQueryType(buildRangeQueryType()).setFieldType(QueryFieldType.NUMBER)
        );
    }
}
